1. Field of the Invention
Embodiments of the present invention generally relate to a method for allocating computer resources for executing a virtualized environment.
2. Description of the Related Art
Generally, in a virtualized computer environment, virtual machines are configured to run on one or more host computers. Each virtual machine uses CPU and memory resources of one of the host computers and runs its own operating system and application programs to give the appearance that it is operating as a stand-alone computer system. The amount of CPU and memory resources for each of the virtual machines on a host computer can be designated manually by an administrator of the virtualized computer environment or automatically according to resource policies set by the administrator. In some virtualized computer environments, load balancing is enforced across multiple host computers by software that monitors resource usage on different host computers and migrates one or more virtual machines from one host computer to another, e.g., from a busy host computer to one that has excess capacity.
Additionally, enterprises engaged in developing, testing, and deploying their applications must find a way to deal with many layers of the targeted platform. These layers include application services, virtualization, and hardware infrastructure with compute, network, storage, and management at all levels. Information technology (IT) and engineering groups must also focus their energy on acquiring, deploying, and providing ongoing management, as well as making sure all the layers work seamlessly together. This situation increases an enterprise's initial and ongoing cost, extends the development cycle, and reduces flexibility needed to respond to changes in the market.
Further, the traditional enterprise information technology (IT) roles such as server administrator, UNIX administrator, and network, storage or exchange administrator, have been generally static. The roles operate in isolation, or in “silos”, which causes friction within IT organizations, as well as between developers and IT. Further, it has been difficult for developers to play the role of IT administrator when their developed applications were deployed as “cloud” applications. This difficulty has been due not only to various access-controls, authentication and authorization complexities, but also to a model of organizational separation between developers and IT, where the default behavior is to “deny access”.
Enterprises face several challenges when developing applications for the cloud. Software is increasingly being offered as a service and deployed through the cloud. A new breed of software, referred to as “Web-apps” is being developed by many organizations. Web-apps have an unpredictable traffic workload. Enterprise Software is increasingly developed using languages such as Java and Ruby/Rails and developer frameworks such as Spring. Development cycles are shrinking and products are frequently being deployed on “clouds”. Consequently, application owners and software developers must ensure that the new features that they develop are rapidly taken through the dev-build-test-stage-deploy cycle. Finally, traditional IT roles are being turned on their heads when enterprises adopt cloud computing and move to delivery of applications via the software-as-a-service model (SAAS) on a public cloud or private cloud deployment environment
As such, there is a demand for a more efficient operational model for accelerated delivery of new IT high-value services.